﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MontagsmalerApp
{
	/// <summary>
	/// Repräsentiert eine Person, die an einem Spiel teilnimmt.
	/// </summary>
	[Serializable]
	public class Einzelspieler : Spielteilnehmer
	{
		private int punkte;

		/// <summary>
		/// Erstellt eine neue Instanz des Einzelspielers mit dem angegebenen Namen.
		/// </summary>
		/// <param name="name"></param>
		public Einzelspieler(string name)
			: base(name)
		{
			punkte = 0;
		}

		/// <summary>
		/// Gibt die aktuelle Punktzahl des Einzelspielers zurück.
		/// </summary>
		/// <returns></returns>
		public override int GetAktuellePunkte()
		{
			return punkte;
		}

		/// <summary>
		/// Setzt die Punkte dieses Spielers auf 0 zurück.
		/// </summary>
		public override void PunkteZuruecksetzen()
		{
			punkte = 0;
		}

		/// <summary>
		/// Zwei Einzelspieler sind gleich, wenn sie den gleichen Namen tragen.
		/// </summary>
		/// <param name="obj"></param>
		/// <returns></returns>
		public override bool Equals(object obj)
		{
			Einzelspieler other = obj as Einzelspieler;

			if ((object)other == null)
				return false;

			return other.Name.ToLower() == this.Name.ToLower();
		}

		public override int GetHashCode()
		{
			return GetType().GetHashCode() + Name.GetHashCode();
		}

		/// <summary>
		/// Addiert die angegebene Punktzahl zu den bisherigen Punkten dazu.
		/// </summary>
		/// <param name="neuePunktzahl"></param>
		public override void AddierePunkte(int neuePunktzahl)
		{
			punkte += neuePunktzahl;
		}
	}
}

